Wea orj

https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt

# -----------IMPORT DATA------------
source <- 'https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt'

# Read the contents of the file
file_content <- readLines(source)
## Warning in readLines(source): incomplete final line found on
## 'https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt'
# Replace all asterisks with an empty string
modified_content <- gsub("\\*", "", file_content)

modified_content <- gsub("\\#", "", modified_content)

modified_content <- gsub("Provisional", "", modified_content)

# Write the modified content back to the file
writeLines(modified_content, here("sanitised.txt"))

df <- read.table(here("sanitised.txt"), skip=7, fill=TRUE)

col_names <- c("year","month", "max_t", "min_t", "days", "rain", "sun")

colnames(df) <- col_names

# -----------TIDY DATA------------
cf <- df %>% 
  mutate(sun = parse_number(sun)) %>% # remove non-numeric data
  mutate(year=as.numeric(year), # change data type to numeric
         max_t=as.numeric(max_t),
         min_t=as.numeric(min_t),
         days=as.numeric(days),
         rain=as.numeric(rain))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `sun = parse_number(sun)`.
## Caused by warning:
## ! 553 parsing failures.
## row col expected actual
##   1  -- a number    ---
##   2  -- a number    ---
##   3  -- a number    ---
##   4  -- a number    ---
##   5  -- a number    ---
## ... ... ........ ......
## See problems(...) for more details.
## Warning: There were 3 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `max_t = as.numeric(max_t)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 2 remaining warnings.
write.csv(cf, here("data", "tidy_data.csv"))

PLOTS

# ----------MAKE SOME PLOTS------------

p <- ggplot(cf, mapping=aes(x=month, y=max_t, group=year,
                            col=year))
p + geom_line(alpha=.1) + 
  scale_color_gradient(low='blue', high='red')
## Warning: Removed 24 rows containing missing values (`geom_line()`).

july <- cf %>% 
  filter(month == 7)

p2 <- ggplot(july, mapping=aes(x=year, y=max_t, 
                               col=max_t))
p2 + geom_point()
## Warning: Removed 3 rows containing missing values (`geom_point()`).

average <- cf %>% 
  group_by(year) %>% 
  summarise(avg_upper = mean(max_t), 
            avg_lower = mean(min_t))

ANIMATED

# -------LET'S ANIMATE-----
p3 <- ggplot(average, mapping=aes(x=year, y=avg_upper,
                                  frame=year))
#p3 + geom_point() 

anim <- p3 + geom_point() + 
  transition_manual(year, cumulative = TRUE) +
  ggtitle('The year is: {frame + 1882}')

anim_save(here("plots", "average_by_year.gif"), anim, renderer = gifski_renderer())
## Warning: Removed 2 rows containing missing values (`geom_point()`).
## Removed 2 rows containing missing values (`geom_point()`).
## Removed 2 rows containing missing values (`geom_point()`).
## Warning: Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).

ROLL OVER

# -------LET'S ROLL OVER------
p4 <- ggplot(cf, mapping=aes(x=month, y=max_t, 
                             group=year, col=year)) +
  geom_line()
p4
## Warning: Removed 24 rows containing missing values (`geom_line()`).

ggplotly(p4)
saveWidget(ggplotly(p4), file='interactive.html')